<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // 最大公约数 从两个数中较小的数开始 找到第一个都能被这两个数同时整除的数就是最大公约数数
        (function () {
            function greatestCommonDivisor(a, b) {
                if (!a || !b) {
                    console.log("参数错误");
                    return false;
                }
                if (a > b) {
                    let temp = a;
                    a = b;
                    b = temp;
                }
                for (var i = a; i >= 1; i--) {
                    if (a % i === 0 && b % i === 0) {
                        return i;
                    }
                }
            }
            //greatestCommonDivisor(8, 12); //4
            //greatestCommonDivisor(16, 8); //8
            //greatestCommonDivisor(8, 17); //1
            //greatestCommonDivisor(3, 1); //1

            // 最小公倍数 等于两个数的乘积/最大公约数
            function lcm(a,b){
                var gcd=greatestCommonDivisor(a,b);
                if(gcd){
                    console.log((a*b)/gcd);
                    return (a*b)/gcd;
                }
            }
            lcm(8,12);   //24
            lcm(45,30);  //90
            lcm(36,270); //540
            lcm(20,40);  //40

            // 求多个数的最小公倍数 先求其中两个的最小公倍数 再求这个数与第三个数的最小公倍数
            let a=[756,4400,19845,9000];
            var temp=lcm(a[0],a[1]);
            for(var i=2;i<a.length;i++){
               temp=lcm(temp,a[i]);
            }
            console.log(temp); //87318000
        })();
    </script>
</body>

</html>